package com.yanti.domain.enums;

import com.yanti.domain.exception.BaseExceptionInterface;

public enum AppHttpCodeEnum implements BaseExceptionInterface {
    // 成功
    SUCCESS(200,"操作成功"),
    // 登录
    NEED_LOGIN(401,"需要登录后操作"),
    NO_OPERATOR_AUTH(403,"无权限操作"),
    SYSTEM_ERROR(500,"出现错误"),
    USERNAME_EXIST(501,"用户名已存在"),
    PHONE_NUMBER_EXIST(502,"手机号已存在"),
    EMAIL_EXIST(503, "邮箱已存在"),
    REQUIRE_USERNAME(504, "必需填写用户名"),
    LOGIN_ERROR(505,"用户名或密码错误"),
    COMMENT_NOT_NULL(506,"评论内容不能为空"),
    USERNAME_NOT_NULL(507,"用户名不能为空"),
    NICKNAME_NOT_NULL(508,"昵称不能为空"),
    PASSWORD_NOT_NULL(509,"密码不能为空"),
    EMAIL_NOT_NULL(510,"邮箱不能为空"),
    NICKNAME_EXIST(511,"昵称重复"),

    USER_NOT_EXIST(512,"用户不存在"),

    LOGIN_TYPE_ERROR(513,"登录类型错误"),
    PHONE_OR_PASSWORD_ERROR(514,"手机号或密码错误"),

    PASSWORD_ERROR(515, "密码格式错误， 密码长度6-16位，允许数字、字母和特殊字符（限定为@#$%等），同时包含至少两种类型的字符"),

    // ------验证码相关------
    VERIFICATION_CODE_SEND_FREQUENTLY(512,"验证码发送频繁"),
    VERIFICATION_CODE_ERROR(513,"验证码错误"),
    VERIFICATION_CODE_EXPIRED(514,"验证码过期"),
    VERIFICATION_CODE_NOT_NULL(515,"验证码不能为空"),
    PARAM_NOT_VALID(516,"参数无效"),

    // -- 文件上传相关 --
    FILE_UPLOAD_ERROR(601, "文件上传失败"),
    FILE_UPLOAD_TYPE_ERROR(602, "文件类型错误"),
    FILE_UPLOAD_SIZE_ERROR(603, "文件大小超出限制"),
    FILE_UPLOAD_MAX_SIZE_ERROR(604, "文件大小超出最大限制"),
    AVATAR_UPLOAD_NOT_EMPTY(605, "头像文件不能为空"),
    BACKGROUND_UPLOAD_NOT_EMPTY(606, "背景图片文件不能为空"),

    // -- 用户修改信息服务相关状态码 --
    NICK_NAME_VALID_FAIL(701,"昵称请设置2-24个字符，不能使用@《/等特殊字符"),
    YANTI_ID_VALID_FAIL(702, "研题号请设置6-15个字符，仅可使用英文（必须）、数字、下划线"),
    SEX_VALID_FAIL(703, "性别错误"),
    INTRODUCTION_VALID_FAIL(704, "个人简介请设置1-100个字符"),

    // -- AI对话服务 --
    CONVERSATION_NOT_EXIST(801, "会话不存在"),

    // -- 刷题服务 --
    QUESTION_NOT_EXIST(901, "题目不存在"),
    TEMPORARY_COMMIT_FAILED(902, "暂存答案失败");
    ;
    final Integer code;

    final String msg;


    AppHttpCodeEnum(Integer code, String errorMessage){ this.code = code;
    this.msg = errorMessage;
    }


//    public int getCode() { return code;
//    }
//
//
//    public String getMsg() { return msg;
//    }

    @Override
    public Integer getErrorCode() {
        return code;
    }

    @Override
    public String getErrorMessage() {
        return msg;
    }
}